package com.liang.lingdong.service;

import com.liang.lingdong.model.auth.dto.UserJoinDto;
import com.liang.lingdong.model.auth.dto.UserLoginByEmailDto;
import com.liang.lingdong.model.auth.dto.UserLoginDto;
import com.liang.lingdong.model.auth.dto.UserSendEmailDto;
import com.liang.lingdong.model.auth.vo.AuthCodeVo;
import com.liang.lingdong.model.auth.vo.UserLoginVo;
import com.liang.lingdong.model.user.vo.UserVo;

/**
 * 验证码服务
 */

public interface AuthService {

    /**
     * 获取验证码
     * @return 验证码
     */
    AuthCodeVo getAuthCode();

    /**
     * 校验验证码
     */
    boolean checkAuthCode(String uid, String answer, String key);

    /**
     * 销毁验证码
     */
    boolean destroyAuthCode(String uid, String key);

    /**
     * 用户报名加入我们
     * @param userJoinDto 用户参数
     * @return 结果
     */
    boolean userJoin(UserJoinDto userJoinDto);


    /**
     * 用户登录
     * @param userLoginDto 用户登录参数
     * @return 结果
     */
    UserLoginVo userLogin(UserLoginDto userLoginDto);

    /**
     * 用户发送邮件
     * @param userSendEmailDto 用户发送邮件参数
     * @return 结果
     */
    String sendEmail(UserSendEmailDto userSendEmailDto);

    /**
     * 用户通过邮箱登录
     * @param userLoginByEmailDto 用户通过邮箱登录参数
     * @return 结果
     */
    UserLoginVo userLoginByEmail(UserLoginByEmailDto userLoginByEmailDto);

    /**
     * 获取登录用户信息
     * @return 结果
     */
    UserVo loginUserInfo();
}
